// var oBtn = document.getElementById('J_btn');

// oBtn.onclick = function() {
//   console.log(this)
// }

// oBtn.addEventListener('click', function() {
//   console.log(this);
// }, false)

// 事件处理函数内部的 this 总是 指向被绑定的DOM元素


// ES5 一般用立即执行函数来模拟
;(function (doc) {
  var oBtn = doc.getElementById('J_btn');

  function Plus(a, b) {
    this.a = a
    this.b = b

    this.init();
  }

  Plus.prototype.init = function() {
    this.bindEvent();
  }

  Plus.prototype.bindEvent = function () {
    // 事件处理函数内部的 this 总是 指向被绑定的DOM元素
    // oBtn.addEventListener('click', this.handleBtnClick, false)
    // oBtn.addEventListener('click', this.handleBtnClick.bind(this), false)
    console.log('bindEvent', this);
    var _self = this
    oBtn.addEventListener('click', function () {
      console.log(this) // Dom元素
      // this.handleBtnClick(); // is not a function
      _self.handleBtnClick();
    }, false)

  }

  Plus.prototype.handleBtnClick = function() {
    console.log(this)
    console.log(this.a, this.b)
    console.log(this.a + this.b);
  }

  window.Plus = Plus;

})(document);

new Plus(3, 4);

